package ch01;

/**
 * @author yang
 * @date 2024-04-09
 */
public class TestMain {
    public static void main(String[] args) {
        /**
         * 1)传统用法 - 实例化列对象调用方法
         */
        InterfaceAdd add01 = new AddTest();
        add01.add(10, 20);

        /**
         * 2)匿名内部类
         *
         *  接口名称 对象名 = new 接口名称() {
         *      重写抽象方法;
         *  }
         */
        InterfaceAdd add02 = new InterfaceAdd() {
            @Override
            public void add(int a, int b) {
                System.out.println("匿名内部类:" + (a + b));
            }
        };
        add02.add(30, 40);

        new InterfaceAdd() {
            @Override
            public void add(int a, int b) {
                System.out.println("匿名内部类:" + (a + b));
            }
        }.add(10, 40);


        /**
         * 3)lambda表达式
         *  表达式实现 ()->{}
         *  {}可省略
         */
        InterfaceAdd add03 = (a,b) -> System.out.println("lambda表达式:" + (a + b));
        add03.add(50, 60);

        ((InterfaceAdd) (a, b) -> System.out.println("lambda表达式:" + (a + b))).add(10, 40);
    }
}
